package com.smart.community.property.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 催缴/沟通 费用类型枚举
 * 0-物业费，1-卫生费，2-水费，3-电费，4-燃气费，后续可扩展
 * 严格遵循《系统状态枚举权威标准声明.md》《智慧社区微服务架构总览.md》
 */
@Getter
@AllArgsConstructor
public enum ReminderFeeTypeEnum {
	/**
	 * 类型：物业费
	 */
	PROPERTY_FEE(0, "物业费"),
	/**
	 * 类型：卫生费
	 */
	SANITATION_FEE(1, "卫生费"),
	/**
	 * 类型：水费
	 */
	WATER_FEE(2, "水费"),
	/**
	 * 类型：电费
	 */
	ELECTRICITY_FEE(3, "电费"),
	/**
	 * 类型：燃气费
	 */
	GAS_FEE(4, "燃气费");

    @JsonValue
    private final int code;
    private final String desc;

    public static ReminderFeeTypeEnum fromCode(Integer code) {
        if (code == null) return null;
        for (ReminderFeeTypeEnum value : values()) {
            if (value.code == code) return value;
        }
        return null;
    }
    
    /**
     * Jackson反序列化方法
     * 严格遵循《系统状态枚举权威标准声明.md》规范
     * 
     * @param code 枚举值
     * @return 对应的枚举，如果不存在则返回null
     */
    @JsonCreator
    public static ReminderFeeTypeEnum fromCodeForJackson(Integer code) {
        return fromCode(code);
    }
} 